package br.com.churrascariabrasadeouro.telas;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;

import sun.java2d.pipe.SpanShapeRenderer.Simple;

import br.com.churrascariabrasadeouro.Principal;
import br.com.churrascariabrasadeouro.negocio.Comanda;
import br.com.churrascariabrasadeouro.negocio.Item;
import br.com.churrascariabrasadeouro.negocio.Produto;
import br.com.churrascariabrasadeouro.persistencia.ProdutoDAO;
import br.com.churrascariabrasadeouro.regras.*;
/**
 * Tela 
 * 
 * @author mariojp
 *
 */
public class TelaCadastroComanda extends JFrame{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	/**
	 * 
	 */
	//Itens da tela de cadastro
	private JLabel dataLabel = new JLabel("Data: ");
	private JTextField data  = new JTextField(15);
	private JLabel itemLabel = new JLabel("Produto");
	private JTextField item = new JTextField(15);
	private JComboBox produtoCB;
	private JButton detalhe = new JButton("+");
	private JLabel valorLabel= new JLabel("Valor");
	private JTextField valor = new JTextField(15);
	private JLabel quantidadeLabel= new JLabel("Quantidade");
	private JTextField quantidade = new JTextField(15);

	private JButton adicionar = new JButton("Adicionar");
	private JButton gravar = new JButton("Gravar");
	private Comanda comanda = new Comanda();
	private RegraComanda regra = new RegraComanda();
	private ComandaModeloTabela modelo = new ComandaModeloTabela();

	private JTable tabela;
	Font f = new Font("Times", Font.ITALIC, 15);

	private JLabel espaco = new JLabel("");  

	private RegraProduto regraProduto = new RegraProduto();
	/**
	 * Construtor
	 */
	public TelaCadastroComanda() {
		this.setTitle("Tela Cadastro de Comandas");
		this.setSize(300, 300);
		
		//Declarando e inserindo ao Panel do topo o dataLabel 
		JPanel topo = new JPanel(new GridLayout(5,2));
		this.add(topo, BorderLayout.NORTH);
		topo.add(dataLabel);
		Date date = new Date();
		SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
		data.setText(sdf.format(date));
		topo.add(data);
		//Declarando e inserindo ao  Panel do centro o itemlabel
		
		tabela = new JTable(modelo);
		topo.add(itemLabel);
		//modelo.setDados();
		JScrollPane scrollPane = new JScrollPane(tabela);
		tabela.setFillsViewportHeight(true);
		tabela.setDragEnabled(false);
		tabela.setShowGrid(true);
		tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		tabela.setCellSelectionEnabled(false);
		tabela.setColumnSelectionAllowed(false);
		tabela.setRowSelectionAllowed(true);
		tabela.getTableHeader().setReorderingAllowed(false);		
		//Vetor que guarda os produtos
		Vector v = new Vector();
		v.add("Selecione");
		for(Produto p : regraProduto.listaProduto()){
			v.add(p.getDescricao());
		}
		produtoCB = new JComboBox(v);
		
		produtoCB.addActionListener(new ActionListener() {
		
			public void actionPerformed(ActionEvent e) {
		              /*for(Produto produto: Principal.produto){
					  if(produto.getDescricao().equals(produtoCB.getSelectedItem()) && produtoCB.getSelectedItem()!= "Refeicao"){
						valor.setText(produto.getValor()+"");
					 }else{
						valor.setText("0.0");
					}
				}*/
			}
		});
		JPanel itens = new JPanel();
		itens.add(produtoCB);
		itens.add(detalhe);
		topo.add(itens);
		topo.add(quantidadeLabel);
		quantidade.setText("1");
		topo.add(quantidade);
		topo.add(valorLabel);
		topo.add(valor);
		topo.add (espaco);
		topo.add(adicionar);
		adicionar.setFont(f);

		this.add(topo,BorderLayout.NORTH);
		this.add(scrollPane,BorderLayout.CENTER);
		this.add(gravar,BorderLayout.SOUTH);
		
		this.pack();
		
		gravar.addActionListener(new ActionListener() {
			
			public void actionPerformed(ActionEvent arg0) {
				Comanda c = new Comanda();
				regra.cadastrarComanda(c);
				tabela.setModel(new ComandaModeloTabela());
				
				JOptionPane.showMessageDialog(TelaCadastroComanda.this, "Comanda gravada com sucesso!");
				
			}
		});
		
		adicionar.addActionListener(new ActionListener() {
			
			
			public void actionPerformed(ActionEvent e) {
				Item item = new Item();
				String descricao = produtoCB.getSelectedItem().toString();
				Produto p =  regraProduto.obterProduto(descricao);
				item.setProduto(p);
				item.setValor(Double.parseDouble(valor.getText()));
				item.setQuantidade(Integer.parseInt(quantidade.getText()));
				comanda.getItens().add(item);
				modelo.getDados().add(item);
			 tabela.updateUI();
			}
		});
		
		detalhe.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				new TelaDetalheProdutoComanda();
				
			}
		});
	
		this.setVisible(true);
	}
	
	
	
	
}
